package com.yupi.springbootinit.aop;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import java.util.Date;

//@Slf4j
//public class SessionUpdateInterceptor implements HandlerInterceptor {
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        HttpSession session = request.getSession(false); // 不创建新的Session，如果不存在则返回null
//
//        log.info("session最大不活动时间",session.getMaxInactiveInterval());
//        if (session != null) {
//            // 更新Session的最后访问时间或其他逻辑
//            session.setMaxInactiveInterval(9000);
//            log.info("session最大不活动时间"+session.getMaxInactiveInterval());
//        }
//        return true; // 返回true表示继续处理请求，false表示中断请求
//    }
//
//    @Override
//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//        // 请求处理后可执行的操作，如日志记录等
//    }
//
//    @Override
//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//        // 在整个请求完成后执行，可用于资源清理等操作
//    }
//
//    public long getRemainingSessionTimeout(HttpSession session) {
//        // 获取Session的创建时间（毫秒）
//        long creationTime = session.getCreationTime();
//        log.info("session创建时间"+creationTime);
//        // 获取Session的最大不活动时间间隔（秒）
//        int maxInactiveInterval = session.getMaxInactiveInterval();
//        log.info("session最大不活动时间"+maxInactiveInterval);
//        // 当前时间戳（毫秒）
//        long currentTime = System.currentTimeMillis();
//        log.info("当前时间"+currentTime);
//
//        // 计算Session的过期时间（毫秒）
//        long expirationTime = creationTime + (maxInactiveInterval * 1000L);
//
//        // 计算剩余有效时间（毫秒）
//        long remainingTime = expirationTime - currentTime;
//
//        // 返回剩余有效时间，转换为秒
//        return remainingTime / 1000L;
//    }
//}
